home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 45 / Amiga Format CD45 (1999-09)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-11].iso / -serious- / programming / c / vbcc-grexx / vc.ged < prev    next >
Text File  |  1999-08-09  |  4KB  |  154 lines

  1. /*
  2. **  $VER: vc.ged (5 Feb 1998)
  3. **
  4. **  **
  5. **  PROGRAMNAME:  vc.ged
  6. **
  7. **  FUNCTION:     Compile current file using vbcc
  8. */
  9.  
  10. GOLDEDNAME = "GOLDED.VBCC"                  /* Adjust this if you want */
  11.  
  12. OPTIONS RESULTS                             /* enable return codes     */
  13.  
  14. if (LEFT(ADDRESS(), 6) ~= "GOLDED") then    /* not started by GoldEd ? */
  15.     address GOLDEDNAME
  16.  
  17. 'LOCK CURRENT'                              /* lock GUI, gain access   */
  18.  
  19.  
  20. OPTIONS FAILAT 6                            /* ignore warnings         */
  21. SIGNAL ON SYNTAX                            /* ensure clean exit       */
  22.  
  23. /* ------------------------- INSERT YOUR CODE HERE: ------------------ */
  24.  
  25. 'QUERY CAT'
  26. isGerman = (result = "deutsch")
  27.  
  28. 'QUERY ANYTEXT'
  29.  
  30. if (result = 'TRUE') then 
  31.  
  32.     do
  33.  
  34.         'QUERY DOC VAR OLDNAME'             /* remember current file name */
  35.         'QUERY FILE VAR FILENAME'           /* Let GoldED work for us     */
  36.         'QUERY PATH VAR PATH'
  37.  
  38.         'QUERY MODIFY VAR MODIFIED'
  39.  
  40.         dotposfile = LASTPOS(".", FILENAME) /* gives some security */
  41.  
  42.         if (dotposfile = 0) THEN DO
  43.  
  44.             if( isGerman) THEN 'REQUEST STATUS "Dateiname muß eine Endung besitzen!"'
  45.             else 'REQUEST STATUS "Filename should have an extension"'
  46.  
  47.             'UNLOCK'
  48.             EXIT 5
  49.         END
  50.  
  51.         BASENAME = LEFT( FILENAME, dotposfile-1)  /* name without extension */
  52.  
  53.  
  54.         FULLNAME = OLDNAME
  55.  
  56.         if (MODIFIED = 'TRUE') THEN DO
  57.  
  58.             if (isGerman) THEN
  59.                 'REQUEST BODY "Datei noch nicht gespeichert!" BUTTON "_Speichern|_Abbruch"'
  60.             else 'REQUEST BODY "File not yet saved!" BUTTON "_Save|_Cancel"'
  61.  
  62.             if (RESULT = 1) THEN DO
  63.                 'SAVE ALL'
  64.             END
  65.             else DO
  66.                 'UNLOCK'
  67.                 EXIT
  68.             END
  69.  
  70.         END
  71.  
  72.         'UNLOCK'
  73.  
  74.         ADDRESS COMMAND                 /* address shell */
  75.  
  76.         PRAGMA('D', "PATH")               /* set shell current directory */
  77.         call pragma 'Stack', 250000
  78.  
  79.         'run <>NIL: VBrowse <>NIL: editor "GED Config GOLDED:Config/C.prefs Line %d %s" top 14 left 0 width 640 height 184'
  80.         'vc <NIL: >T:vcout.txt ' || FILENAME || ' -+ -lextra -lmieee -o ' || BASENAME
  81.  
  82.         ok = (RC = 0)
  83.         warn = ( RC <= 5)
  84.  
  85.         'VSend <T:vcout.txt >NIL:'
  86.  
  87.         ADDRESS                             /* address host (GoldED) */
  88.  
  89.         'LOCK QUIET NAME ' || FULLNAME
  90.  
  91.         if (res = 1) then do                /* Temporary compiled */
  92.             'NAME NEW ' || OLDNAME          /* restore old file name */
  93.             if (MODIFIED = 1) then do       /* No, we didn't really save the text :-) */
  94.                 'TEXT T="A"'                /* so we have to set the modify-flag */
  95.                 'BACK'
  96.                 end
  97.             end
  98.  
  99.         if (ok | warn) then do                     /* Compiler run ok? */
  100.  
  101.             if (isGerman) then
  102.                 'REQUEST BODY="vc fertig. Programm starten ?" BUTTON="_starten|_NEIN"'
  103.             else
  104.                 'REQUEST BODY="vc done. Run program ?" BUTTON="_run|_NO"'
  105.  
  106.  
  107.             if (result = 1) then do
  108.  
  109.                 'REQUEST TITLE="Commandline options" BODY="'PATH || '/' || BASENAME '" BUTTON="_OK|_Cancel" STRING VAR OPTIONS'
  110.                 IF options ~= "OPTIONS" THEN DO
  111.  
  112.                     'UNLOCK'
  113.                     ADDRESS     /* Address shell */
  114.                     BASENAME || ' <>"con:0/200//240/'|| BASENAME ||'/CLOSE/WAIT/SCREEN ' || GOLDEDNAME'"' || OPTIONS
  115.                         /* Yeah, we now have output AND input !!! */
  116.  
  117.                     EXIT
  118.                 END
  119.             end
  120.         end
  121.     end
  122.  
  123. else do
  124.  
  125.     if (isGerman) then
  126.         'REQUEST BODY="Kein Text vorhanden ?!"'
  127.     else
  128.         'REQUEST BODY="Text buffer is empty ?!"'
  129. end
  130.  
  131. /* ---------------------------- END OF YOUR CODE ----------------------- */
  132.  
  133. 'UNLOCK' /* VERY important: unlock GUI */
  134. EXIT
  135.  
  136. /* mygetenv stolen from some TeX scripts ... */
  137. mygetenv: PROCEDURE     /* WHEN will ARexx supply GetEnv/SetEnv ? */
  138.    PARSE ARG name
  139.  
  140.    IF open(TEMPFILE,"ENV:"||name,'r') THEN DO
  141.         gives = readln(TEMPFILE)
  142.         CALL close TEMPFILE
  143.         END
  144.    ELSE gives = ""
  145.  
  146.    RETURN gives
  147.  
  148.  
  149. SYNTAX:
  150.  
  151. SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("
  152. 'UNLOCK'
  153. EXIT
  154.